@import '../framework/variables';
@import './conflict_colors';
@import 'page_bundles/mixins_and_variables_and_functions';

@mixin diff-background($background, $idiff, $border) {
  background: $background;

  &.line_content span.idiff {
    background: $idiff;
  }

  &.diff-line-num {
    border-color: $border;
  }
}

@mixin dark-diff-match-line {
  color: $dark-diff-match-bg;
  background: $dark-diff-match-color;
}

@mixin diff-expansion($background, $color, $hover-background, $hover-color) {
  background-color: $background;
  color: $color;

  &:hover {
    background-color: $hover-background;
    color: $hover-color;
  }
}


@mixin dark-diff-expansion-line {
  &.expansion .diff-td {
    background-color: $dark-diff-match-color;
  }
}

@mixin line-coverage-border-color($coverage, $no-coverage) {
  transition: border-left 0.1s ease-out;

  &.coverage {
    border-left: 2px solid $coverage;
  }

  &.no-coverage {
    border-left: 4px solid $no-coverage;
  }
}

@mixin line-number-hover {
  background-color: $purple-100;
  border-color: $purple-200;

  a {
    color: $gray-600;
  }
}

@mixin line-number-hover-dark {
  background-color: $purple-800;
  border-color: $purple-300;

  a {
    color: $purple-50;
  }
}

@mixin conflict-colors($theme) {
  .diff-line-num {
    &.conflict_marker_our,
    &.conflict_our {
      background-color: map-get($conflict-colors, #{$theme}-header-head-neutral);
      border-color: map-get($conflict-colors, #{$theme}-header-head-neutral);
    }

    &.conflict_marker_their,
    &.conflict_their {
      background-color: map-get($conflict-colors, #{$theme}-header-origin-neutral);
      border-color: map-get($conflict-colors, #{$theme}-header-origin-neutral);
    }
  }

  .line_holder {
    .line_content,
    .line-coverage {
      position: relative;

      &.conflict_marker_our {
        background-color: map-get($conflict-colors, #{$theme}-header-head-neutral);
        border-color: map-get($conflict-colors, #{$theme}-header-head-neutral);
      }

      &.conflict_marker_their {
        background-color: map-get($conflict-colors, #{$theme}-header-origin-neutral);
        border-color: map-get($conflict-colors, #{$theme}-header-origin-neutral);
      }

      &.conflict_our {
        background-color: map-get($conflict-colors, #{$theme}-line-head-neutral);
        border-color: map-get($conflict-colors, #{$theme}-line-head-neutral);
      }

      &.conflict_their {
        background-color: map-get($conflict-colors, #{$theme}-line-origin-neutral);
        border-color: map-get($conflict-colors, #{$theme}-line-origin-neutral);
      }
    }
  }
}


@mixin line-link($color, $icon) {
  &::before {
    @include gl-visibility-hidden;
    @include gl-align-self-center;
    @include gl-mr-1;
    @include gl-w-5;
    @include gl-h-5;
    background-color: rgba($color, 0.3);
    mask-image: asset_url('icons-stacked.svg##{$icon}');
    mask-repeat: no-repeat;
    mask-size: cover;
    mask-position: center;
    content: '';
  }

  &:hover {
    &::before {
      background-color: rgba($color, 0.6);
    }
  }
}

@mixin line-hover-bg($color: $white-normal) {
  &:hover,
  &:focus-within {
    background-color: darken($color, 10);
  }
}

@mixin hljs-override($suffix, $color) {
  &.blob-viewer {
    .hljs-#{$suffix} {
      color: $color;
    }
  }
}
